/* Copyright (c) 2004-2024 Peigen.info. All rights reserved. */

package info.peigen.hotpot.business.fee.core.service;

import info.peigen.hotpot.business.fee.core.service.processor.account.FeeAccountTransferProcessor;
import info.peigen.hotpot.business.fee.core.service.processor.active.ActiveCalculateFeeProcessor;
import info.peigen.hotpot.business.fee.core.service.processor.calculate.CalculateFeeProcessor;
import info.peigen.hotpot.business.fee.core.service.processor.calculate.CalculateFeeResultProcessor;
import info.peigen.hotpot.business.fee.core.service.processor.check.CheckCalculateFeeProcessor;
import info.peigen.hotpot.business.fee.core.service.processor.check.CheckDuplicateFeeRuleProcessor;
import info.peigen.hotpot.business.fee.core.service.processor.check.CheckTimeRangeOverride24hoursProcessor;
import info.peigen.hotpot.business.fee.core.service.processor.rule.*;
import info.peigen.hotpot.business.fee.core.service.processor.store.StoreFeeLogProcessor;
import info.peigen.hotpot.business.fee.core.service.processor.store.StoreFeeRuleProcessor;
import info.peigen.hotpot.common.service.base.processor.AbstractProcessorService;
import lombok.AccessLevel;
import lombok.experimental.FieldDefaults;
import org.noear.solon.annotation.Inject;


/**
 * <b>(AbstractFeeService)</b>
 *
 * @author Peigen
 * @version 1.0.0
 * @since 2021/7/29
 */
@SuppressWarnings("ALL")
@FieldDefaults(level = AccessLevel.PROTECTED)
public class AbstractFeeService extends AbstractProcessorService {

    // Check Processors
    @Inject
    CheckCalculateFeeProcessor             checkCalculateFeeProcessor;
    @Inject
    CheckDuplicateFeeRuleProcessor         checkDuplicateFeeRuleProcessor;
    @Inject
    CheckTimeRangeOverride24hoursProcessor checkTimeRangeOverride24HoursProcessor;

    // Active Processors
    @Inject
    ActiveCalculateFeeProcessor activeCalculateFeeProcessor;

    // Business Processors
    @Inject
    FeeRuleCreateProcessor   feeRuleCreateProcessor;
    @Inject
    FeeRuleModifyProcessor   feeRuleModifyProcessor;
    @Inject
    FeeRuleDeleteProcessor   feeRuleDeleteProcessor;
    @Inject
    CalculateFeeProcessor    calculateFeeProcessor;
    @Inject
    FeeRuleCompleteProcessor feeRuleCompleteProcessor;

    // Account Processor
    @Inject
    FeeAccountTransferProcessor feeAccountTransferProcessor;

    // Store Processors
    @Inject
    StoreFeeLogProcessor  storeFeeLogProcessor;
    @Inject
    StoreFeeRuleProcessor storeFeeRuleProcessor;

    // result process
    @Inject
    CalculateFeeResultProcessor  calculateFeeResultProcessor;
    @Inject
    FeeRuleCreateResultProcessor feeRuleCreateResultProcessor;


}